跳到主要内容

1.5.2递减运算符(缩减运算符)

你已经熟悉了两个值之间的按位操作,比如 a & b 或者 a ^ b。有时,你想要创建一个宽门,该门作用于一个向量的所有位,例如 (a[0] & a[1] & a[2] & a[3] ...),如果向量很长,这样做就会很繁琐。

简化操作符可以对向量的所有位进行AND、OR和XOR操作,产生一个位的输出:

& a[3:0] // 简化AND:a[3]&a[2]&a[1]&a[0]。等同于 (a[3:0] == 4'hf) 
| b[3:0] // 简化OR:b[3]|b[2]|b[1]|b[0]。等同于 (b[3:0] != 4'h0)
^ c[2:0] // 简化XOR:c[2]^c[1]^c[0]

这些都是只有一操作数的单目操作符(类似于NOT操作符!和~)。你也可以反转这些操作符的输出来创建NAND、NOR和XNOR门,例如,(~& d[7:0])。

现在你可以重新审视1.2.5小节4输入门和1.5.3小节100输入门的概念了。

实践应用:

奇偶校验常被用作检测数据通过不完美信道传输时错误的简单方法。创建一个电路,用于计算8位字节的奇偶校验位(这将在字节中添加第9位)。我们将使用“偶”奇偶校验,其中奇偶校验位就是所有8个数据位的XOR结果。

模块声明

module top_module (
input [7:0] in,
output parity);

做题区